package qjc.f_矩阵;

public class f4_搜索二维矩阵 {
    /**
     * 遍历矩阵的每一行,在当前行中使用二分查找法查找目标值,
     * 如果找到了目标值，返回 true,如果遍历完所有行都没有找到目标值，返回 false,
     * 二分查找法
     */
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int[] row : matrix){
            int index = search(row, target);
            if(index >= 0){
                return true;
            }
        }
        return false;
    }
    private int search(int[] nums, int target){
        int left = 0;
        int right = nums.length - 1;
        while (left <= right){
            int mid = (left + right) >>> 1;
            if(nums[mid] == target){
                return mid;
            }
            if(nums[mid] < target){
                left = mid + 1;
            }else {
                right = mid - 1;
            }
        }
        return -1;
    }
}
